package org.snia.exception;

/**
 * 业务异常类
 * 
 * @author j90004284
 * @version CloudStor CSE Service Platform Subproject, May 31, 2010
 * @see
 * @since
 */
public class BusinessException
    extends AbstractException
{
    private static final long serialVersionUID = 1L;

    /**
     * 空构造函数
     */
    public BusinessException()
    {
        super();
    }

    /**
     * 错误码/错误参数构造函数
     * 
     * @param errorCode 错误码
     * @param errorArgs 错误参数
     */
    public BusinessException(String errorCode, String[] errorArgs)
    {
        super(errorCode, errorArgs);
    }

    /**
     * 错误消息构造函数
     * 
     * @param errorMessage 错误消息
     */
    public BusinessException(String errorMessage)
    {
        super(errorMessage);
    }

    /**
     * 错误消息构造函数
     * 
     * @param errorMessage 错误消息
     * @param e 异常对象
     */
    public BusinessException(String errorMessage, Exception e)
    {
        super(errorMessage, e);
    }

    /**
     * 错误消息构造函数
     * 
     * @param errorMessage 错误消息
     * @param errorCode 错误码，可以用来携带可配置的消息名
     * @param e 触发该异常的异常，用于保留底层异常的栈信息
     */
    public BusinessException(String errorMessage, String errorCode, Exception e)
    {
        super(errorMessage, errorCode, e);
    }

    /**
     * 错误消息构造函数,不携带异常栈信息，用于自定义抛出的异常
     * 
     * @param errorMessage 错误消息
     * @param errorCode 错误码，可以用来携带可配置的消息名
     */
    public BusinessException(String errorMessage, String errorCode)
    {
        super(errorMessage);
        this
            .setErrorCode(errorCode);
    }

    /**
     * 获取异常栈内容
     * 
     * @return 异常栈内容
     */
    public String getStackTraceString()
    {
        return ExceptionUtil
            .getStackTrace(this);
    }
}
